class Solution {
public:
    int longestValidParentheses(string s) {
        int n=s.size();
        int len=0;

        stack<int> st;
        st.push(-1);
        for(int i=0;i<n;i++)
        {
            if(s[i]=='(')
            {
                st.push(i);
            }
            if(s[i]==')')
            {
                st.pop();
                if(st.empty()) st.push(i);
                else 
                {
                    len=max(len,i-st.top());
                }
            }
        }
        return len;
    }
};

